<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<HEAD>
     <TITLE>Frameset</TITLE>
     <link rel="stylesheet" type="text/css" href="../../../ss/2.css" id="thecss">
     <script type="text/javascript" src="../../../scripts/csschange.js"></script>
</HEAD>

<BODY onload="readSS()">

<br>
<center>
<table border=3 cellpadding=5 cellspacing=0>
<tr>
     <td><h1 class="pagetitle">Frameset</h1>
         <b><a href="../../../misc/suppkey.htm">Support Key:</a></b> 
         [<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<b><i class="fs">4</i></b>] 
         [<b class="s">X1</b>|<span class="ns">X1.1</span>]
         [<b class="s">IE3A1</b>|<b class="s"> M3B2</b><a href="#peculiar">*</a>|<b><i class="fs">N2</i></b>|<b class="s">O2.1</b>]</td>
     <td><a href="#what">What is it?</a><br>
         <a href="#attrib">Attributes</a><br>
         <a href="#example">Tag Example</a>
     </td>
     <td><a href="#model">Parent/Content Model</a><br>
         <a href="#tips">Tips &amp; Tricks</a><br>
         <a href="#peculiar">Browser Peculiarities</a></td>
</tr>
<tr><td align=center colspan=3>
<font size=2>= <span class="sitetitle">Index DOT Html</span> by <a href="../../../misc/email.htm">Brian Wilson</a> =</font>
</td></tr>
</table>

<font size=2>
     <a href="../../index.html">Main Index</a> |
     <a href="../../tree/htmltree.htm">Element Tree</a> |
     <a href="../../tagindex/a.htm">Element Index</a> |
     <a href="../../supportkey/a.htm">HTML Support History</a></font>
</center>
<hr align="center" width="25%">

<br><br>
<table border=1 cellspacing=0 cellpadding=5>
<tr><td>
<table border=0 cellspacing=0>
<tr>
    <th colspan=3 valign=bottom class="field"><big><u><b
        class="colheaders">&#160;&#160;&#160;Quick Statistics&#160;&#160;&#160;</b></u></big><br></th>
</tr>
<tr><th align=left><b class="l3heading"><a href="../stats.htm#et">End Tag:</a></b><br></th>
    <td rowspan=7>&nbsp;&nbsp;</td>
    <td><span class="magicword">Required</span></td></tr>
<tr><th align=left><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b><br></th>
    <td>Transitional/Frameset HTML 4.x/XHTML 1.0 DTDs only. Dropped in XHTML 1.1</td></tr>
<tr><th align=left><b class="l3heading"><a href="../stats.htm#xhtm">XHTML Modules:</a></b><br></th>
    <td><b class=alert>Frames</b></td></tr>
<tr><th align=left valign=top><b class="l3heading"><a href="../stats.htm#disp">CSS 'display' Type:</a></b><br></th>
    <td>"<b class="alert">block</b>" (according to CSS2, but that doesn't make complete sense)</td></tr>
<tr><th align=left valign=top><b class="l3heading"><a href="../stats.htm#css">CSS Mapping:</a></b><br></th>
    <td>NA</td></tr>
<tr><th align=left><b class="l3heading"><a href="../stats.htm#rnd">Default Rendering:</a></b><br></th>
    <td>Divides viewport into regions specified in ROWS and COLS attributes</td></tr>
<tr><th align=left><b class="l3heading"><a href="../stats.htm#w3docs">Official Docs:</a></b><br></th>
    <td><a href="http://www.w3.org/TR/html401/present/frames.html#h-16.2.1">HTML 4.x</a>, 
        <a href="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_framesmodule">XHTML 1.0</a></td></tr>
</table>
</td></tr>
</table>

<a name="what"></a>
<dl>
<dt><big><b class="mainheading">What is it?</b></big>
    <dd>This element represents the meta structure of a document using frames.
        By replacing the BODY element in the document structure, the FRAMESET
        element defines the document layout in terms of areas of the screen
        containing sub-document URLs (the frame content.)
        <br><br>

        Each FRAMESET element can consist of a ROWS attribute, a COLS attribute,
        or both. The ROWS attribute indicates that the sub-area is to be divided
        in to horizontal document &quot;stripes&quot;, while the COLS attribute
        defines vertical display areas. Using both attributes in a single FRAMESET
        creates a grid of sub document areas.
        <br><br>

        If no ROWS or COLS attributes are present in a FRAMESET element, it is
        interpreted as a single row arbitrarily sized to fit the current window.
        If <em>BOTH</em> ROWS and COLS have been specified, sub-document definitions
        are distributed left-to-right, top-to-bottom of the frame layout. Nested
        FRAMESET structures occur in place of where a corresponding FRAME definition
        statement would appear.
        <br><br>

        <b class="alert">Note:</b> The <b class="alert">*</b> character used below
        in the ROWS and COLS attributes deserves some explanation, as its use in
        this situation is unique in HTML. By itself, the <b class="alert">*</b>
        character specifies that any remaining frame width be devoted to the current
        frame. If there are multiple frames in the ROWS/COLS specification that have the
        <b class="alert">*</b> character, remaining space will be divided
        evenly between them. If the <b class="alert">*</b> character is
        preceded by an integer (<b class="alert">N</b>), that frame will
        receive <b class="alert">N</b> times as much of the remaining relative 
        sized space as it would without the <b class="alert">N</b> prefix.
</dl>


<a name="attrib"></a>
<dl>
<dt><br><big><b class="mainheading">Common Attributes</b></big>
<dt><b class="subheading">%<a href="../attributes/core.htm">Core</a>%</b>
    <dd>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<b><i class="fs">4</i></b>] 
        [<b class="s">X1</b>|<span class="ns">X1.1</span>]
        [<b><i class="fs">IE4B1</i></b>|<span class="ns">M</span>|<b class="s">N6B1</b>|<b class="s">O5</b>]

<dt><b class="subheading">%<a href="../attributes/accessibility.htm">Accessibility</a>%</b>
    <dd>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<b><i class="fs">4</i></b>] 
        [<b class="s">X1</b>|<span class="ns">X1.1</span>]
        [<b><i class="fs"> IE4 </i></b>|<span class="ns"> M
         </span>|<b class="s"> N6 </b>|<span class="ns"> O </span>

<dt><b class="subheading">%<a href="../attributes/events.htm">Events</a>%</b>
    <dd>[<span class="ns">2</span>|<span class="ns">3</span>|3.2</span>|<span class="ns">4</span>] 
        [<b><i class="fs">X1</i></b>|<span class="ns">X1.1</span>]
        [<b class="s">IE3</b>|<span class="ns">M</span>|<b><i class="fs">N2</i></b>|<b class="s">O3</b>]

<dt><b class="subheading">%<a href="../attributes/language.htm">Language</a>%</b>
    <dd>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<span class="ns">4</span>] 
        [<span class="ns">X1</span>|<span class="ns">X1.1</span>]
        [<b><i class="fs">IE4</i></b>|<span class="ns">M</span>|<span class="ns">N</span>|<span class="ns">O</span>]

<dt><b class="subheading">%<a href="../attributes/editing.htm">Editing</a>%</b>
    <dd>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<span class="ns">4</span>] 
        [<span class="ns">X1</span>|<span class="ns">X1.1</span>]
        [<b><i class="fs">IE5.5</i></b>|<span class="ns">M</span>|<span class="ns">N</span>|<span class="ns">O</span>]

<dt><br><big><b class="mainheading">Specific Attributes</b></big>
<dt><b class="subheading">Border</b>
<dt>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<span class="ns">4</span>] 
    [<span class="ns">X1</span>|<span class="ns">X1.1</span>]
    [<b class="s">IE4B1</b>|<span class="ns">M</span>|<b><i class="fs">N3B5</i></b>|<b class="s">O2.1</b>]
    <dd><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b> NA
    <dd><b class="l3heading">Description:</b><br>
        This attribute is used in the outermost FRAMESET tag to globally set
        the border thickness for all frames within the FRAMESET.
    <dd><b class="l3heading">Values:</b>
        Positive integers representing the pixel space between frames.
        If BORDER=<b class="alert">0</b> is used, it implicitly sets
        FRAMEBORDER to <b class="alert">No</b>.

<dt><b class="subheading">BorderColor</b>
<dt>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<span class="ns">4</span>] 
    [<span class="ns">X1</span>|<span class="ns">X1.1</span>]
    [<b class="s">IE4B2</b>|<span class="ns">M</span>|<b><i class="fs">N3B5</i></b>|<span class="ns">O</span>]
    <dd><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b> NA
    <dd><b class="l3heading">Required?</b> No
    <dd><b class="l3heading">Description:</b><br>
        When this attribute is used in the FRAMESET tag, it attempts to set the
        colors of all borders for all frames in the frameset. This can be
        overridden on a frame-by-frame basis in the FRAME tag.
    <dd><b class="l3heading">Values:</b>
        The standard <a href="../../../color/colors.htm">HTML color specification</a> methods apply.

<dt><b class="subheading">Cols</b>
<dt>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<b><i class="fs">4</i></b>] 
    [<b class="s">X1</b>|<span class="ns">X1.1</span>]
    [<b class="s">IE3A1</b>|<b class="s">M3B2</b>|<b><i class="fs">N2</i></b>|<b class="s">O2.1</b>]
    <dd><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b>
        In Transitional and Frameset HTML 4.x/XHTML 1.0 DTDs only. Dropped in XHTML 1.1.
    <dd><b class="l3heading">Required?</b> No
    <dd><b class="l3heading">Description:</b><br>
        This attribute specifies that the current window will be sub-divided
        into columns (vertical bands of framed content.) Values to this attribute
        are separated by commas, and represent the horizontal widths of the
        resultant separate child frames in the current parent frameset. In theory,
        all values listed should account for, or sum up to, the full parent frame
        size. It is possible to abuse this, because the three types of values
        can be freely intermixed.
    <dd><b class="l3heading">Values:</b> <a href="../../../misc/glossary.htm#cdata">CDATA</a>.
        [Specified in <b class="alert">pixels</b>, a percentage of parent frame width
        (<b class="alert">%</b>) or in a dynamic relative sizing attribute specified 
        by the use of the <b class="alert">*</b> character.]

<dt><b class="subheading">FrameBorder</b>
<dt>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<span class="ns">4</span>] 
    [<span class="ns">X1</span>|<span class="ns">X1.1</span>]
    [<b><i class="fs">IE3A1</i></b>|<span class="ns">M</span>|<b class="s">N3B5</b>|<b class="s">O7</b>]
    <dd><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b> NA
    <dd><b class="l3heading">Required?</b> No
    <dd><b class="l3heading">Description:</b><br>
        This attribute gives the author the option of whether or not to have
        borders around all the frames in the FRAMESET. This value can
        be overridden locally at the FRAME level.
    <dd><b class="l3heading">Values:</b> <br>
        &#160;&#160;&#160;&#160;Internet Explorer lists values of
        <b class="alert">1</b> [<b class="magicword">DEFAULT</b>] and
        <b class="alert">0</b> [display no border.]<br>
        &#160;&#160;&#160;&#160;Netscape lists values
        for this attribute as <b class="alert">Yes</b> [<b class="magicword">DEFAULT</b>] and
        <b class="alert">No</b>, but also understands "<b class="alert">1</b>"/"<b class="alert">0</b>".

<dt><b class="subheading">FrameSpacing</b>
<dt>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<span class="ns">4</span>] 
    [<span class="ns">X1</span>|<span class="ns">X1.1</span>]
    [<b><i class="fs">IE3A1</i></b>|<span class="ns">M</span>|<span class="ns">N</span>|<span class="ns">O</span>]
    <dd><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b> NA
    <dd><b class="l3heading">Required?</b> No
    <dd><b class="l3heading">Description:</b><br>
        This attribute specifies the size of the gap (in pixels) between
        individual frames in a frameset.
     <dd><b class="l3heading">Values:</b>
        Positive integers representing the pixel space between frames.

<dt><b class="subheading">Name</b>
<dt>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<span class="ns">4</span>] 
    [<span class="ns">X1</span>|<span class="ns">X1.1</span>]
    [<b><i class="fs">IE4</i></b>|<span class="ns">M</span>|<span class="ns">N</span>|<span class="ns">O</span>]
    <dd><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b> NA
    <dd><b class="l3heading">Required?</b> No
    <dd><b class="l3heading">Description:</b><br>
        This attribute specifies the name of the link so that scripting languages
        may access it.
    <dd><b class="l3heading">Values:</b>
        An alphanumeric string. Must begin with an alphabetic character.

<dt><b class="subheading">Rows</b>
<dt>[<span class="ns">2</span>|<span class="ns">3</span>|<span class="ns">3.2</span>|<b><i class="fs">4</i></b>] 
    [<b class="s">X1</b>|<span class="ns">X1.1</span>]
    [<b class="s">IE3A1</b>|<b class="s">M3B2</b>|<b><i class="fs">N2</i></b>|<b class="s">O2.1</b>]
    <dd><b class="l3heading"><a href="../stats.htm#std">Standards Details:</a></b> 
        In Transitional and Frameset HTML 4.x/XHTML 1.0 DTDs only. Dropped in XHTML 1.1.
    <dd><b class="l3heading">Required?</b> No
    <dd><b class="l3heading">Description:</b><br>
        This attribute specifies that the current window will be sub-divided
        into rows (horizontal bands of framed content.) Values to this
        attribute are separated by commas, and represent the vertical height
        of the resultant separate child frames in the current parent frameset.
        In theory, all values listed should account for, or sum up to, the full
        parent frame size. It is possible to abuse this, because the three
        types of values can be freely intermixed.
    <dd><b class="l3heading">Values:</b> <a href="../../../misc/glossary.htm#cdata">CDATA</a>.
        [Specified in <b class="alert">pixels</b>, a percentage of parent frame
        height (<b class="alert">%</b>) or in a dynamic relative sizing attribute 
        specified by the use of the <b class="alert">*</b> character.]
</dl>


<a name="example"></a>
<dl>
<dt><big><b class="mainheading">Example</b></big>
    <dd><div class="example">&lt;<b class="tagname">html</b>&gt;<br>
        &lt;<b class="tagname">head</b>&gt;<br>
        &#160;&#160;&#160;&#160;&lt;<b class="tagname">title</b>&gt;Frames
        Example&lt;/<b class="tagname">title</b>&gt;<br>
        &lt;/<b class="tagname">head</b>&gt;<br>
        &lt;<b class="tagname">frameset</b>
        <span class="tagattrib">rows</span>=&quot;20,25%,*&quot;&gt;<br>
        &#160;&#160;&#160;&#160;&lt;<b class="tagname">frame</b>
        <span class="tagattrib">src</span>=&quot;frame1.html&quot;
        <span class="tagattrib">name</span>=&quot;frame1&quot; /&gt;<br>
        &#160;&#160;&#160;&#160;&lt;<b class="tagname">frame</b>
        <span class="tagattrib">src</span>=&quot;frame2.html&quot;
        <span class="tagattrib">name</span>=&quot;frame2&quot; /&gt;<br>
        &#160;&#160;&#160;&#160;&lt;<b class="tagname">frameset</b>
        <span class="tagattrib">cols</span>=&quot;30%,*&quot;&gt;<br>
        &#160;&#160;&#160;&#160;
        &#160;&#160;&#160;&#160;&lt;<b class="tagname">frame</b>
        <span class="tagattrib">src</span>=&quot;frame3.html&quot;
        <span class="tagattrib">name</span>=&quot;frame3&quot; /&gt;<br>
        &#160;&#160;&#160;&#160;
        &#160;&#160;&#160;&#160;&lt;<b class="tagname">frame</b>
        <span class="tagattrib">src</span>=&quot;frame4.html&quot;
        <span class="tagattrib">name</span>=&quot;frame4&quot; /&gt;<br>
        &#160;&#160;&#160;&#160;&lt;/<b class="tagname">frameset</b>&gt;<br>
        &lt;<b class="tagname">noframes</b>&gt;<br>
        &#160;&#160;&#160;&#160;&lt;<b class="tagname">body</b>&gt;<br>
        &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;This text
        will appear only if the browser does not support frames.<br>
        &#160;&#160;&#160;&#160;&lt;/<b class="tagname">body</b>&gt;<br>
        &lt;/<b class="tagname">noframes</b>&gt;<br>
        &lt;/<b class="tagname">frameset</b>&gt;<br>
        &lt;/<b class="tagname">html</b>&gt;</div>
</dl>


<a name="model"></a>
<dl>
<dt><big><b class="mainheading">Parent Model</b></big>
    <dd>&lt;frameset&gt; |
        &lt;<a href="../h/html.htm">html</a>&gt;
<dt><big><b class="mainheading">Content Model</b></big>
    <dd>&lt;<a href="../f/frame.htm">frame</a>&gt; |
        &lt;frameset&gt; |
        &lt;<a href="../n/noframes.htm">noframes</a>&gt;
</dl>


<a name="tips"></a>
<big><b class="mainheading">Tips &amp; Tricks</b></big>
<ul>
    <li>There are many readers out there who do not like frames.
        Keep this in mind when authoring your pages.
    <li><b class="alert">Good situations to use frames:</b><br>
        <b class="magicword"><em>Elements that the User Should Always See.</em></b><br>
        Things such as control bars, copyright notices, and title graphics can be
        placed in a static, individual frame.<br>
        <b class="magicword"><em>Table of Contents.</em></b><br>
        One frame can contain an index that, when clicked, displays results in an
        adjoining frame. <br>
        <b class="magicword"><em>Question and Answer.</em></b><br>
        Frames design allows queries to be posed and answered on the same page, with
        one frame holding the query form, and the other presenting the results.
    <li>It is <em>STRONGLY</em> recommended to include alternate body content
        in the NOFRAMES section of a frames definition document. Even if the content
        is a link to a non-framed version of the page, this provides users of frames
        incapable browsers the chance to view the content of your site.
    <li><a href="../../../testing/html/tags/f/frameset-bp1.htm">[Test]</a>
        It is easy to abuse any of the methods of specifying frame sizes to allow
        dimensions that are not equal to the parent frame size (while this can
        be harmless, it could cause display problems.)
    <li>A Frequently Asked Question about Frames authoring:<br>
        <em><b class="alert">How do I cause a hyperlink to update multiple
        frames?</b></em><br>
        It is possible to do with just HTML, but it can become complex very quickly.
        If you need to update multiple frames, define the group of multiple frames
        that you want to update simultaneously as a single frame. The URL of that
        frame will be yet ANOTHER frameset. When it comes time to do an action that
        will affect multiple frames, call the action with the TARGET being the FRAME
        NAME for the group. This update will probably need to call another
        destination URL that is also a FRAMESET definition page. Note: This works
        easiest when the multiple frames that need updating are adjacent or easily
        defined by a single FRAMESET tag. This method does <em>NOT</em> work as well
        for pages that need to update multiple times.
</ul>

<a name="peculiar"></a>
<big><b class="mainheading">Browser Peculiarities</b></big>
<ul>
    <li><b class="alert">Support Note:</b> An attempt was made in the beta versions
        of Mosaic V. 3.0 to support frames capability, but it was retracted
        for the PC final release version.
    <li><a href="../../../testing/html/tags/f/frameset-bp2.htm">[Test]</a>
        None of the Internet Explorer or Netscape versions allow recursive references
        to parent documents.
    <li>Anecdote: A security hole was found in early Netscape implementations
        where an author could specify a fairly invisible 1 pixel frame that could
        keep track of all sites the user visited.
    <li>Internet Explorer seems to be much more stringent in parsing correct
        frames document syntax. If your documents work fine under Netscape, it
        won't hurt to re-check the behavior under Internet Explorer.
    <li>Netscape uses the BORDER attribute to control the frame border size
        while Internet Explorer uses the FRAMESPACING attribute to control the
        same behavior. It should be safe to use both of these attributes at the
        same time to ensure proper display on both of these browsers.
    <li><a href="../../../testing/html/tags/f/frame-bp2.htm">[Test]</a>
        In all versions of Netscape, if no SRC attribute is initially specified,
        the frame area is no longer addressable as a target (even if a NAME is
        specified) for document links, etc. Internet Explorer and Opera handle
        the case of an initial blank SRC just fine.
    <li><a href="../../../testing/html/tags/f/frame-bp3.htm">[Test]</a>
        Authors can also choose to specify ROWS and COLS in the same FRAMESET
        element. If this is done, the nested FRAME references will be assigned
        sequentially to the ROWS and COLS layout specifications as follows:
        left to right, top to bottom (eg: COLS, <em>then</em> ROWS.)
    <li><b class="alert">IE/Netscape Compatibility:</b> If you are trying to
        create content that flows seamlessly across frames in IE and Netscape,
        check out <a href="../../topics/frameborders.htm">this document</a>
        for some tips.
    <li><a href="../../../testing/html/tags/f/frameset-bp3.htm">[Test]</a>
        Internet Explorer: If the FRAMESPACING attribute is given a value of
        zero, it effectively sets the NORESIZE attribute of the sub-frames as
        well. It almost seems as if IE frames need a positive FRAMESPACING
        value for the user to "grab on to" or move.
    <li>Internet Explorer versions before 5.5 Beta 1 implemented frames by creating new
        instances of IE. The greater the number of frames, the greater the number
        of active IE "browser copies" there were. This was not the most efficient
        of methods. Beginning in IE v5.5 Beta 1 frames are now implemented using
        a single browser control, which Microsoft states will improve overall
        frame performance.
    <li>CSS: Before IE v5.5 Beta 1, FRAMEs and IFRAMEs could not use the 'z-index'
        property (they would always be on the "top" of the rendering surface and
        nothing could be placed "above" them) and could not be transparent (such
        that content from positioned content beneath would "shine through".)
        Beginning in IE v5.5 Beta 1, these capabilities now exist.
    <li>Netscape 6 and CSS: Even though support for the %Core% attributes is
        listed here, in direct testing it seemed that <em>VERY</em> few
        CSS properties could successfully be applied to this element. Keep this
        in mind in your authoring.
</ul>


<br>
<a href="../../../misc/copyright.htm">Boring Copyright Stuff...</a>

</BODY>
</HTML>
